#include "gtest-1.6.0/fused-src/gtest/gtest.h"
#include "../libraries/Equipo/jugador.h"
#include "../libraries/threads/Thread.h"

using namespace std;


    void* recibir(void* param)
    {
        Jugador* albiol= (Jugador*)param;// creamos un puntero a jugador y lo igualamos al que le pasamos
        while (true)
        {

        albiol->guardar();      //funcion que almacena los datos del server
        }
    }

    void* enviar(void* param)
    {
        Jugador* albiol= (Jugador*)param;
        albiol->zonas();
        albiol->jugar();
    }

//declaramos los mutex
pthread_mutex_t nl = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t est = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t vis = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t vel = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t cic = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t envio = PTHREAD_COND_INITIALIZER;
pthread_mutex_t ang = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t vista_nueva = PTHREAD_COND_INITIALIZER;


int main()
{
    Jugador albiol(&nl,&vis,&vista_nueva,&est,&vel,&cic,&envio,&ang);    //creamos un jugador y lo conectamos
    albiol.conectar(6000,"127.0.0.1");
    albiol.guardar();//La primera vez, llamamos a guardar desde aqui para asegurarnos de coger la primera cadena del server
    cout<<"conectado bien"<<endl;

    string hola="(flag t l) (goal r) (line b)";
    cout<<hola<<endl;
    cout<<albiol.cambioCampo(hola)<<endl;

    //creamos los treads. Los join evitan que el programa termine.
    pthread_t entradas;
    pthread_t salidas;
    pthread_create(&entradas,NULL,&recibir,&albiol);
    pthread_create(&salidas,NULL,&enviar,&albiol);

    pthread_join(entradas,NULL);
    pthread_join(salidas,NULL);

    while(1){}

    return 0;
}
